Модуль:Factory
local p = {} local arrData = mw.loadData( 'Module:DataFactory' ) local crops = mw.loadData( 'Module:DataCrops' ) local animal = mw.loadData( 'Module:DataAnimal' ) local tree = mw.loadData( 'Module:DataTree' ) local materials = mw.loadData( 'Module:DataMaterials' ) --Карточка фабрики-- function p.Factory( frame ) local id = frame.args1 local text=' [[Файл:'..arrDataid.name..'.png|240px]] '.. ' Название: '..arrDataid.name..' '.. ' Тип: Фабрика '.. ' Фабрику можно купитm: '.. ' с'..arrDataid.level..' уровня за '..arrDataid.buy..' 15px ' if arrDataid.buyagro~=0 then text=text..' с'..arrDataid.levelagro..' уровня за '..arrDataid.buyagro..' 15px ' end text=text..' '.. ' '.. ' Время производства 1 единицы продукции: '..arrDataid.tm..' мин. '.. ' Одновременно на фабрику можно загрузить сырья для производства '..arrDataid.c..' единиц продукции. ' if arrDataid.exper~=0 then text=text..' Опыт за покупку фабрики: '..arrDataid.exper..' . ' end if arrDataid.del~=0 then text=text..' Компенсация при удалении: '..arrDataid.del..' 15px. ' end text=text..' Локация: '..arrDataid.location..' '.. ' ' return text..Factorybuild(id)..Factoryres(id)..port(id) end --Улучшение в Порту-- function port(id) local text=' Улучшение в Торговом порту ' local ok, msg = pcall(function () if arrDataid.port nil then error() end end) if ok then text=text..' Фабрику можно улучшить в Торговом порту. ' else text=text..' Фабрику нельзя улучшить в Торговом порту. ' return text end text=text..' Что можно улучшить? Для одних фабрик можно уменьшить время производства товара, для других фабрик увеличить количество загружаемого сырья с 3 до 6. Всего можно улучшить 8 таких фабрик на локации. '.. ' '.. ' '.. ' Уровень '.. ' Цена 15px '.. ' Цена 15px '.. ' Количество ресурсов, загружаемых за 1 раз '.. ' Время производства продукции в минутах '.. ' ' local c,tm=arrDataid.c, arrDataid.tm local co for i,v in ipairs(arrDataid.port) do c=c+v.vol if v.tm~=0 then style1=' color:#088A08; font-size: 20px' tm=v.tm end text= text..' '.. ' '..v.level..' '.. ' '..v.buy..' '.. ' '..v.buy1..' ' if v.vol~=0 then text= text..' '..c..' ' else text= text..' '..c..' ' end if v.tm~=0 then text= text..' '..tm..' ' tm=v.tm else text= text..' '..tm..' ' end text= text..' ' i=i+1 co=i-1 end text=text..' ' --Галерея из 3-5 фоток для порра-- text=text..require("Module:Gallery").Gallery(id,co) return text end --Стройматериалы-- function Factorybuild(id) local text=' Строительство ' local ok, msg = pcall(function () if arrDataid.materials nil then error() end end) if ok then text=text..' После покупки фабрику необходимо еще построить, для этого нужно будет купить материалы. ' else text=text..'Фабрика строится мгновенно, сразу же при покупке. Материалы для запуска фабрики не нужны.' return text end text=text..' '.. ' '.. ' '.. ' Материалы '.. ' Количество '.. ' Цена 15px '.. ' Стоимость 15px '.. ' ' local total=0 for i,v in ipairs(arrDataid.materials) do --Проверка на наличие материалов в модуле-- local ok, msg = pcall(function () if materialsv.name.buy nil then error() end end) if ok then text= text..' '.. ' 50px '.. ' '..v.name..' '.. ' '..v.c..' '.. ' '..materialsv.name.buy..' '.. ' '..materialsv.name.buy*v.c..' '.. ' ' total=total+materialsv.name.buy*v.c else text= text..' '.. ' '..v.name..' '.. ' '.. ' '.. ' ' end i=i+1 end text= text..' '.. ' Итого: '.. ' '.. ' '.. ' '.. ' '..total..' '.. ' ' text=text..' ' return text end --Производимая продукция и ресурсы-- function Factoryres(id) --Составляем массив для столбца с ресурсами-- data = {} --Преобразуем деревья-- for key,v in pairs(tree) do if v.nameprod '' then datakey={buy=v.sell,fab=key,name=v.name} else datav.nameprod={buy=v.sell,fab=key,name=v.nameprod} end end --Преобразуем животных-- for key,v in pairs(animal) do datav.nameprod={buy=v.sell,fab=v.nameprod,name=v.nameprod} end --Преобразуем продукцию фабрик-- for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do datav1.nameprod={buy=v1.sell,name=v1.nameprod,fab=key} end end --Добавлем семена-- for key,v in pairs(crops) do datakey={name=v.name,fab=key} local ok, msg = pcall(function () if cropspkey.agronom nil then error() end end) datakey.buy= ok and v.buy or v.sell end local text='' local total=0 text=text..' Производство '.. ' В следующей таблице находится список ресурсов, загружаемых на фабрику, а также список производимых товаров. ' --Добавляется основной ресурс-- local text2, buybase=baseres(id) text=text..text2 --Добавляются столбцы с ресурсами- local text1='' for i,v in ipairs(arrDataid.resources) do local nameres1=v.nameres1 text1=text1..'' --Проверка на наличие ресурса в БД-- local ok, msg = pcall(function () if datanameres1.name nil then error() end end) if ok then text1=text1..'[[Файл:'..datanameres1.name..'.png|50px]]'.. '[['..datanameres1.fab..'|'..datanameres1.name..']]'.. ..datanameres1.buy.. else text1=text1..'50px'.. ..nameres1.... ' - ' end --Добавляются столбцы с продукцией- text1=text1.. '50px'.. ..v.nameprod.... ..v.sell.... '' if ok then text1=text1..(math.floor((v.sell-datanameres1.buy-buybase)*100)/100) else text1=text1..'-' end text1=text1..'' i=i+1 total=i-1 end text=text..' Всего: '..total..' '.. ' '.. ' '.. ' '.. ' Сырье '.. ' Цена 15px '.. ' '.. ' Продукция '.. ' Цена 15px '.. ' Доход 15px '.. ' '..text1..' ' return text end --Добавляется основной ресурс-- function baseres(id) local text='' local buybase=0 --Наличие базового ресурса-- local ok, msg = pcall(function () if arrDataid.resourcebase nil then error() end end) if ok then text=text..' Для производства продукции на эту фабрику необходимо загружать два вида сырья: основное и сменяемое сырье. Основное сырье - сырье, которое требуется для производства каждой единицы продукции. Сменяемое сырье – сырье, которое меняется для производства каждого вида товара. ' else return text, 0 end text=text..' '.. ' '.. ' '.. ' Основное сырье '.. ' Цена 15px '.. ' ' for i,v in ipairs(arrDataid.resourcebase) do local ok, msg = pcall(function () if datav.name.name nil then error() end end) text=text..' ' if ok then text=text.. ' 50px '.. ' [['..datav.name.fab..'|'..v.name..']] '.. ' '..datav.name.buy..' ' buybase=buybase+datav.name.buy else text=text.. ' 50px '.. ' '..v.name..' '.. ' - ' end text=text..' ' end text=text..' Итого: '..buybase..' ' return text, buybase end --Список фабрик на которых можно переработать продукт frame-- function p.fab(frame) local id='' if type(frame) 'string' then id=frame elseif type(frame) 'table' then id= frame.args1 end local text='' local text1='' local rb=false local arrData = mw.loadData( 'Module:DataFactory' ) for key,v in pairs(arrData) do text=' ' local ok, msg = pcall(function () if v.resourcebase nil then error() end end) if ok then for key1,v1 in pairs(v.resourcebase) do if v1.name id then text1=text1..' '..key..' ' rb=true break end end end if not rb then for key2,v2 in pairs(v.resources) do if v2.nameres1 id then text1=text1..' '..key..' ' break end end end text=text..text1..' ' end if text1~='' then text=' Продукт можно переработать на фабриках: '..text..' ' else text=' Продукт можно переработать на фабриках: Пока нет информации ' end return text end --Список продукции фабрик-- function p.product() local text=' ' local product={} local j=1 for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do productj={} productj.fab=key productj.name=v1.nameprod j=j+1 end end table.sort(product,function( a, b ) return a.name < b.name end ) for i,v in ipairs(product) do if i 1 then text=text....string.sub (v.name, 1,2)..' ' else if string.sub (producti.name, 1,2)>string.sub (producti-1.name, 1,2) then text=text..' '....string.sub (v.name, 1,2)..' ' end end text=text..' '..v.name..' ' end text=text..' ' return text end --Общий список фабрик-- function p.list() local data1 = mw.loadData( 'Module:DatalistFactory' ) local data={} for i,v in pairs(data1) do datai=v end table.sort(data, function(a, b) return a < b end) local text=' ' for i,v in ipairs(data) do text=text..' '..v..' ' end text=text..' ' return text end return p